iT邦幫忙

2024 iThome 鐵人賽

DAY 4
0
Security

你的程式真的安全嗎?從資安的角度做 code review系列 第 10

C - error details (資訊曝露:錯誤詳情)

  • 分享至 

  • xImage
  •  

昨天很累所以跑去睡覺了,這就是棄賽人才能有的權利(誤)

下方程式碼片段全部都是擷取自 Secure Code Warrior 線上安全程式培訓平台,因為練習互動時的題目多半不會只有單一個檔案,可能涉及多個檔案、資料夾及多處地方修改,因此我的文章主要是針對最主要的區塊做修改及說明,若有不好理解的地方非常抱歉也還請見諒,也可以實際上去 Secure Code Warrior 玩玩看,搭配著互動,會更有感的學習哦~

C - error details (資訊曝露:錯誤詳情)

  • 形成原因:顯示太多關於為什麼發生錯誤的資訊
  • 後果:暴露的敏感資訊為攻擊者提供有用的資訊,以識別或利用其他漏洞。
  • 實例:一個使用者存取一個不存在的url,網頁伺服器回傳網頁伺服器版本等資訊,攻擊者利用版本資訊搜尋此版本的已知漏洞進行攻擊

https://ithelp.ithome.com.tw/upload/images/20240925/201664902WYsRKBhmX.png

  • 解決方法:
    • 在系統上線前將重要資訊排除於顯示的錯誤訊息
    • 避免依賴預設錯誤訊息設定
    • 系統上線前進行測試以避免未預期的錯誤及產生錯誤訊息
    • 紀錄每一次錯誤的訊息及分析

第1題

錯誤區塊

std::cout << "Error while reading file." << dbMessages <<std::endl;
//程式碼片段擷取自 Secure Code Warrior 線上安全程式培訓平台

解釋:
錯誤訊息顯示檔案所在的完整路徑,暴露了有關關鍵系統檔案位置的敏感資訊。它使潛在攻擊者更容易找到這些檔案並使用或損壞它們。

主要修正方法

把原程式碼 dbMessages 拿掉就好了

解釋:
不要暴露檔案路徑

第2題

錯誤區塊

std::cout << "SQL query failed: " << query << ".\t" << std::endl;
//程式碼片段擷取自 Secure Code Warrior 線上安全程式培訓平台

std::cout << "Error record processing: " << account->getValues() << std::endl;
//程式碼片段擷取自 Secure Code Warrior 線上安全程式培訓平台

解釋:
顯示SQL query或使用者帳戶詳細資訊等資料可能會將敏感資訊暴露給惡意行為者。

主要修正方法

把query改成error
account->getValues()改成i
(這邊的i是account的個數,錯誤訊息回傳第幾個account)

解釋:
使用通用錯誤訊息,不透露特定細節,如SQL查詢或使用者帳戶資訊。安全地記錄錯誤以進行除錯,同時保護敏感資訊。

第3題

錯誤區塊

parser_error(const std::string & line)
: std::runtime_error("Couldn't parse line '" + line + "'")
//程式碼片段擷取自 Secure Code Warrior 線上安全程式培訓平台
throw parser_error(line);
//程式碼片段擷取自 Secure Code Warrior 線上安全程式培訓平台

解釋:
當解密行解析失敗時,程式會回傳一個包含解密行的異常。當在例外情況下被呼叫,它將輸出此行,導致危險的資訊暴露。

主要修正方法

parser_error(const std::string & line)
: std::runtime_error("Couldn't parse line '" + line + "'")
//程式碼片段擷取自 Secure Code Warrior 線上安全程式培訓平台

中印出的line刪掉

以及加入變數line_nr,之後印出line_nr值而非line的值

int line_nr = 1;
throw parser_error(line_nr);
//程式碼片段擷取自 Secure Code Warrior 線上安全程式培訓平台

解釋:
透過僅列印錯誤訊息而不輸出任何未加密資料來充分描述錯誤。


上一篇
C - weak crypto algorithm (不安全的密碼術:演算法使用方式脆弱)
下一篇
C - insecure randoness(不安全的密碼術:隨機性不安全)
系列文
你的程式真的安全嗎?從資安的角度做 code review25
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言